﻿using System.Text.RegularExpressions;

namespace colectionDemo.jobs;

public class DicDemo
{
    /*
    题目 2：单词统计（Dictionary）
    **需求：**
    - 用户输入一段英文句子。    
    - 统计并输出每个单词出现的次数（忽略大小写，去掉标点）。    
    - 使用 `Dictionary<string, int>` 实现。
     */
    
    private Dictionary<string, int> dic = new Dictionary<string, int>();
  

    public void Run()
    {
        Console.WriteLine("请输入要统计的句子");
        //录入句子
        string? line= Console.ReadLine();
        //输出字典
        var result = WordCount(line);
        Console.WriteLine("单词分析结果为：");
        foreach (var item in result)
        {
            Console.WriteLine($"单词：{item.Key} - 数量:{item.Value}");
        }
    }

    private Dictionary<string,int> WordCount(string sentence)
    {
        //转换为小写
        string  lowerCaseSentence = sentence.ToLower();
        //去除符号
        string cleanedSentence = Regex.Replace(lowerCaseSentence, @"[^\p{L}\p{N}\s]", "");
        
        //获取单词
        string[] words = cleanedSentence.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        
        //处理字典
        foreach (var word in words)
        {
            if (dic.ContainsKey(word))
            {
                dic[word]++;
            }
            else
            {
                dic.Add(word, 1);
            }
        }
        return dic;
    }
}